﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Echart.Model.Brush
{
    public class brush
    {
        /// <summary>
        /// 组件 ID
        /// </summary>
        public string id { get; set; }

        /// <summary>
        ///使用在 toolbox 中的按钮。
        ///brush 相关的 toolbox 按钮有：
        ///'rect'：开启矩形选框选择功能
        ///'polygon'：开启任意形状选框选择功能。
        ///'lineX'：开启横向选择功能。
        ///'lineY'：开启纵向选择功能
        ///'keep'：切换『单选』和『多选』模式。后者可支持同时画多个选框。前者支持单击清除所有选框。
        ///'clear'：清空所有选框。
        /// </summary>
        public Array[] toolbox { get; set; }

        /// <summary>          
        /// 不同系列间，选中的项可以联动。
        /// </summary>
        public Array[] brushLink { get; set; }

        /// <summary>          
        /// 指定哪些 series 可以被刷选，可取值为：
        /// 'all': 所有 series
        /// 'Array': series index 列表
        /// 'number': 某个 series index
        /// </summary>
        public Array[] seriesIndex { get; set; }

        /// <summary>          
        /// 指定哪些 geo 可以被刷选。可以设置 brush 是『全局的』还是『属于坐标系的』
        /// </summary>
        public Array[] geoIndex { get; set; }

        /// <summary>          
        /// 指定哪些 xAxisIndex 可以被刷选。 可以设置 brush 是『全局的』还是『属于坐标系的』。
        /// </summary>
        public Array[] xAxisIndex { get; set; }

        /// <summary>          
        /// 指定哪些 yAxisIndex 可以被刷选。 可以设置 brush 是『全局的』还是『属于坐标系的』。
        /// </summary>
        public Array[] yAxisIndex { get; set; }
      
        /// <summary>
        /// 默认的刷子类型。   
        /// 'rect'：矩形选框。
        /// 'polygon'：任意形状选框
        /// 'lineX'：横向选择
        /// 'lineY'：纵向选择。
        /// </summary>
        public string brushType { get; set; }

        /// <summary>
        /// 默认的刷子的模式。可取值为：
        /// 'single'：单选。
        /// 'multiple'：多选。
        /// </summary>
        public string brushMode { get; set; }

        /// <summary>
        /// 已经选好的选框是否可以被调整形状或平移。
        /// </summary>
        public bool? transformable { get; set; }

        /// <summary>
        /// 工具栏组件离容器下侧的距离。
        /// </summary>
        public object brushStyle { get; set; }

        /// <summary>
        ///throttleType 取值可以是：
        ///'debounce'：表示只有停止动作了（即一段时间没有操作了），才会触发事件。时间阈值由 brush.throttleDelay 指定。
        ///'fixRate'：表示按照一定的频率触发事件，时间间隔由 brush.throttleDelay 指定。
        /// </summary>
        public string throttleType { get; set; }

        /// <summary>
        /// throttleType 取值可以是：
        /// 'debounce'：表示只有停止动作了（即一段时间没有操作了），才会触发事件。时间阈值由 brush.throttleDelay 指定。
        /// 'fixRate'：表示按照一定的频率触发事件，时间间隔由 brush.throttleDelay 指定。
        /// </summary>
        public double? throttleDelay { get; set; }

        /// <summary>
        ///在 brush.brushMode 为 'single' 的情况下，是否支持『单击清除所有选框』。
        /// </summary>
        public bool? removeOnClick { get; set; }

        /// <summary>
        ///定义 在选中范围中 的视觉元素。
        ///可选的视觉元素有：
        ///symbol: 图元的图形类别。
        ///symbolSize: 图元的大小。
        ///color: 图元的颜色。
        ///colorAlpha: 图元的颜色的透明度
        ///opacity: 图元以及其附属物（如文字标签）的透明度。
        ///colorLightness: 颜色的明暗度，参见 HSL。
        ///colorSaturation: 颜色的饱和度，参见 HSL。
        ///colorHue: 颜色的色调，参见 HSL。
        /// </summary>
        public object inBrush { get; set; }

        /// <summary>
        ///定义 在选中范围中 的视觉元素。
        ///可选的视觉元素有：
        ///symbol: 图元的图形类别。
        ///symbolSize: 图元的大小。
        ///color: 图元的颜色。
        ///colorAlpha: 图元的颜色的透明度
        ///opacity: 图元以及其附属物（如文字标签）的透明度。
        ///colorLightness: 颜色的明暗度，参见 HSL。
        ///colorSaturation: 颜色的饱和度，参见 HSL。
        ///colorHue: 颜色的色调，参见 HSL。
        /// </summary>
        public object outOfBrush { get; set; }

        /// <summary>
        /// brush 选框的 z-index。当有和不想管组件有不正确的重叠时，可以进行调整。
        /// </summary>
        public double? z { get; set; }

    }
}
